package mrs.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Utilidades
{
	public static final String FORMATO_FECHA_HORA_POR_DEFECTO = "dd/MM/yyyy hh:mm aa";
	public static final String FORMATO_FECHA_POR_DEFECTO = "dd/MM/yyyy";
	public static final String FORMATO_HORA_POR_DEFECTO = "hh:mm aa";
	
	public static float getMax(float[] valores)
	{
		float max = -100;
		for(int i=0; i < valores.length; i++)
		{
			if( valores[i] > max)
			{
				max = valores[i];
			}
		}
		return max;
	}
	
	public static float getMin(float valores[])
	{
		float min = 100;
		for(int i=0; i < valores.length; i++)
		{
			if( valores[i] < min)
			{
				min = valores[i];				
			}
		}
		return min;
	}
	
	/**
	 * Genera una representacion en texto del tiempo
	 * que es pasado por parametro en minutos. Por 
	 * ejemplo: 100 -> 1 hora 40 mins
	 * 
	 * @param minutos
	 * @return representacion en texto del tiempo
	 */
	public static String getRepresentacionTiempo(int minutos)
	{
		int dias = 0;
		int horas = 0;
		
		String representacion = "";
		
		if(minutos < 0)
		{
			throw new IllegalArgumentException("el parametro minutos no puede ser negativo");
		}
		else
		{		
			dias = (minutos/1440);
			if(dias > 0)
			{
				if(dias == 1)
				{
					representacion = dias +" dia ";
				}
				else
				{
					representacion = dias +" dias ";
				}
				minutos = minutos - (dias * 1440);
			}			
			
			horas = (minutos/60);
			if(horas > 0)
			{
				if(horas == 1)
				{
					representacion += horas + " hr ";
				}
				else
				{
					representacion += horas + " hrs ";
				}
				minutos = minutos - (horas * 60);
			}
			
			if(minutos > 0)
			{
				if(minutos == 1)
				{
					representacion += minutos + " min";
				}
				else
				{
					representacion += minutos + " mins";
				}
			}			
		}
		return representacion.trim();
	}
	
	public static String formatearFechaHora(Date date)
	{
		return formatearFechaHora(date,FORMATO_FECHA_HORA_POR_DEFECTO);
	}
	
	public static String formatearFechaHora(Date date, String txtFormato)
	{
		SimpleDateFormat dateFormat = new SimpleDateFormat(txtFormato);
		return dateFormat.format(date);
	}
	
	public static Date cadenaToFecha(String txtFecha) throws ParseException  
	{
		
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat(FORMATO_FECHA_HORA_POR_DEFECTO);
		date = format.parse(txtFecha);
		
		return date;		
	}
	
	public static int diferenciaMinutos(Date fecha1, Date fecha2)
	{
		if(fecha1.after(fecha2))
		{
			throw new RuntimeException("Fechas invalidas");
		}
		
		int dif = 0;
		long t1 = fecha1.getTime();
		long t2 = fecha2.getTime();
		dif = (int)((t2 - t1)/60000);
		
		return dif;
	}
	
	public static int diferenciaMinutos(String txtFecha1, String txtFecha2) throws Exception
	{
		int dif = 0;
		
		Date d1 = cadenaToFecha(txtFecha1);
		Date d2 = cadenaToFecha(txtFecha2);
		dif = diferenciaMinutos(d1, d2);
		
		return dif;
	}
	
	
}
